/**
 * 26. 删除有序数组中的重复项
 */
class Solution1 {
    public int removeDuplicates(int[] nums) {
        if (nums.length == 0){
            return 0;
        }
        int ct = nums.length;
        int index = 0;
        for(int i = 0;i<nums.length-1;i++){
            if(nums[i] != nums[i+1]){
                nums[++index] = nums[i+1];
             }

        }
        
        return index+1;
    }
}

/**
 * 88. 合并两个有序数组
 */
class Solution2 {
    public void merge(int[] nums1, int m, int[] nums2, int n) {
        if( n == 0){
            return;
        }
        //从后往前放
        int i = m-1;
        int j = n-1;
        int r = m+n-1;
        while(i >= 0 && j >= 0){
            //nums2元素大 放进nums1
            if (nums2[j] > nums1[i]){
                nums1[r] = nums2[j];
                //j--  nums2下一个元素继续和nums1比较
                j--;
            }else{
                //nums1元素大 放进nums1
                nums1[r] = nums1[i];
                i--;
            }
            r--;
        }
        //把剩下的元素放进nums1
        while(i >= 0){
            nums1[r--] = nums1[i--];

        }
        while(j >= 0){
            nums1[r--] = nums2[j--];

        }
    }
}

/**
 * 27. 移除元素
 */
class Solution {
    public int removeElement(int[] nums, int val) {
        if (nums.length == 0 || nums == null){
            return 0;
        }
        int j = 0;
        for (int i = 0;i<nums.length;i++){
            if (nums[i] != val){
                nums[j] = nums[i];
                j++;
            }
        }
        return j;
    }
}